// 权限文件、

// 导航对象在这里，所以要导入
import router from './router'
// token在这里面所以要导入
import store from './store'

// 导入进度条组件
import nprogress from 'nprogress'
import 'nprogress/nprogress.css'

// 导航守卫
// to:去哪
// from:从哪来
// next：放行的函数，调用就代表放行，不调用就是不放行

// 路由白名单
// 设置一些页面不需要做token判断，例如登录页，404页
let whileList = ['/login', '/404']
router.beforeEach((to, from, next) => {
  // 准备跳转时要出进度条
  nprogress.start()
  // 判断是否有token，token在
  if (store.getters.token) {
    //   有token
    // 还有判断是否去的登录页
    if (to.path === '/login') {
      // 有token还要去登录页，就打回首页
      next('/')
    } else {
      // 正常放行
      next()
    }
    next()
  } else {
    //  判断要去的路由在不在白名单里面
    // includer() 判断传过来的数在不在数组里面，在的传true，不在传false
    if (whileList.includes(to.path)) {
      next()
    } else {
      // 没有token
      next('/login')
    }
  }
})

// 导航守卫，跳转之后的
router.afterEach((to, from) => {
  // 停止进度条
  nprogress.done()
})
